home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / programming / arexx / rexxbgui / multiselect.rexx < prev    next >
OS/2 REXX Batch file  |  1999-06-14  |  3KB  |  129 lines

  1. /* REXX script for rexxbgui.library: MultiSelect example */
  2.  
  3. if ~show('l','rexxbgui.library') then do
  4.     if ~addlib('rexxbgui.library',0,-30) then do
  5.         exit(20)
  6.     end
  7.     else nop
  8. end
  9. else nop
  10.  
  11. call bguiopen() /* causes error 12 if it did not work */
  12. /* supply a second argument for a '0' return code instead of an ARexx
  13.    error */
  14.  
  15. signal on syntax /* important: bguiclose() MUST be called */
  16. signal on halt
  17. signal on break_c
  18.  
  19. esc='1B'x
  20. lf='0A'x
  21. cr='0D'x
  22. grspace.narrow=-1
  23. grspace.normal=-2
  24. grspace.wide=-3
  25.  
  26. /*
  27. lst.count=26
  28. do i=0 for lst.count
  29.     lst.i=esc'c'd2c(i+65)||d2c(i+97)
  30. end
  31. */
  32. i=0
  33. lst.i='cThis listview object has multi-'; i=i+1
  34. lst.i='cselection turned on. You can'; i=i+1
  35. lst.i='cmulti-select the items by holding'; i=i+1
  36. lst.i='cdown the SHIFT-key while clicking'; i=i+1
  37. lst.i='con the different items or by clicking'; i=i+1
  38. lst.i='con an entry and dragging the mouse'; i=i+1
  39. lst.i='cup or down.'; i=i+1
  40. lst.i='c'; i=i+1
  41. lst.i='cIf you check the No SHIFT checkbox'; i=i+1
  42. lst.i='cyou can multi-select the items without'; i=i+1
  43. lst.i='cusing the SHIFT key'; i=i+1
  44. lst.count=i
  45.  
  46. /* using ARexx feature: ,<newline> is translated to nothing */
  47. /* the || are essential - any added space will cause trouble */
  48. /* redefining the same ID makes previous buttons unaccessible */
  49. /* do not redefine winclose etc. */
  50.  
  51. g=bguivgroup(,
  52.     bguiinfo(,
  53.         'info',,'cbARexx-b conversion'lf'of bMultiSelect-b example',
  54.     )||bguilayout(LGO_FixMinHeight,1)||,
  55.     bguivgroup(,
  56.         bguilistview('listv',,'LST','S')||,
  57.         bguihgroup(,
  58.             bguibutton('all','_All')||,
  59.             bguibutton('none','N_one'),
  60.         ,0)||bguilayout(LGO_Align,1,LGO_FixMinHeight,1),
  61.     ,0)||bguilayout(LGO_NoAlign,1)||,
  62.     bguihgroup(,
  63.         bguicheckbox('ms','_Multiple selection',1)||bguilayout(LGO_FixMinWidth,1)||,
  64.         bguivarspace(50)||,
  65.         bguicheckbox('nsm','_No SHIFT',0)||bguilayout(LGO_FixMinWidth,1),
  66.     )||bguilayout(LGO_FixMinHeight,1)||,
  67.     bguihgroup(,
  68.         bguibutton('show','_Show')||,
  69.         bguivarspace(50)||,
  70.         bguibutton('quit','_Quit'),
  71.     )||bguilayout(LGO_FixMinHeight,1),
  72. ,grspace.normal,grspace.normal)
  73.  
  74. call bguiaddmap(obj.ms,obj.listv,GA_Selected,LISTV_MultiSelect)
  75. call bguiaddmap(obj.nsm,obj.listv,GA_Selected,LISTV_MultiSelectNoShift)
  76.  
  77. call bguiset(obj.listv,,LISTV_MultiSelect,1)
  78.  
  79. a=bguiwindow('Multi-Selection Demo',g,20,30,,arg(1))
  80.  
  81. if bguiwinopen(a)=0 then bguierror(12)
  82. id=0
  83. do while bguiwinwaitevent(a,'ID')~=id.winclose
  84.     select
  85.         when id=id.winactive then nop
  86.         when id=id.wininactive then nop
  87.         when id=id.show then do
  88.             /*
  89.             text=bguiget(obj.listv,LISTV_LastClicked)lf||,
  90.                 bguiget(obj.listv,LISTV_LastClickedNum)
  91.             call bguireq('Results are:'lf||text,'*_OK',,a)
  92.             */
  93.             if bguilistvgetentries(obj.listv,'RES','S')>0 then do
  94.                 do i=0 for res.count
  95.                     say substr(res.i,3)
  96.                 end
  97.             end; else do
  98.                 say 'No selections made!'
  99.             end
  100.         end
  101.         when id=id.ms then do
  102.             if bguiget(obj.ms,GA_Selected)=0 then do
  103.                 call bguiset(obj.nsm,a,GA_Disabled,1)
  104.                 call bguiset(obj.all,a,GA_Disabled,1)
  105.             end; else do
  106.                 call bguiset(obj.nsm,a,GA_Disabled,0)
  107.                 call bguiset(obj.all,a,GA_Disabled,0)
  108.             end
  109.         end
  110.         when id=id.all then call bguiset(obj.listv,a,LISTV_SelectMulti,-8)
  111.         when id=id.none then call bguiset(obj.listv,a,LISTV_Deselect,-1)
  112.         when id=id.quit then leave
  113.         when id=id.winclose then nop
  114.         otherwise nop
  115.     end
  116. end
  117. rc=0
  118.  
  119. syntax:
  120. if rc~=0 then say '+++ ['rc']' errortext(rc) 'at line' sigl
  121. call bguiclose()
  122. exit 0
  123.  
  124. break_c:
  125. halt:
  126. rc=0
  127. say '+++ Break at line' sigl
  128. signal syntax
  129.